package com.wjx.demo.expand

class User(name: String)

fun User.print() {
    println("print")
}

fun Any?.toString(): String {
    if (this == null) {
        return "null"
    } else return this.toString()
}

//在一个类内部你可以为另一个类声明扩展。
class C {
    fun f1() {
        println("c f1")
    }
}

class CC {
    fun f1() {
        println("cc f1")
    }

    fun C.f2() {
        f1()//该函数在分发接受者和扩展接受者均存在，则以扩展接收者优先
        this@CC.f1()//要引用分发接收者的成员你可以使用限定的 this 语法
        println("cc 22")
    }

    fun d(c: C) {
        c.f2() //调用扩展函数
    }
}

fun main(args: Array<String>) {
    User("s").print()
    var s = null
    println(s.toString())

    CC().d(C())
}